'''
遍历一个列表
第一遍遍历,找到最小的数
第二遍遍历,找到第二小的数
以此类推
算法关键点:有序区和无序区,无序区最小数的位置
'''
print('不推荐的算法')
def select_sort(li):
    li_new = []
    for i in range(len(li)):
        min_val = min(li) # min是O(n)的操作
        li_new.append(min_val)
        li.remove(min_val) # remove是O(n)的操作
    return li_new

li = [9,8,7,5,6,3,4,1,2]
print(select_sort(li))

print('推荐算法')
def select_sort_better(li):
    for i in range(len(li)-1): # i是第i趟
        min_loc = i
        for j in range(i,len(li)):
            if li[j] < li[min_loc]:
                min_loc = j
        li[i],li[min_loc] = li[min_loc],li[i]
        print(li)
    return(li)

li2 = [9,8,7,5,6,3,4,1,2]
print(select_sort_better(li2))

